<?php

class SaeMysql extends SaeObject {
	
	static $link;
	static $charset;
	
	function __construct() {
		global $sae_config;
		self::$charset = $sae_config ['db_charset'];
		$this->connect ();
		parent::__construct ();
	}
	
	//连接数据库
	protected function connect() {
		global $sae_config;
		if (empty ( $sae_config ['db_name'] ))
			die ( Imit_L ( '_SAE_PLEASE_CONFIG_DB_' ) );
		self::$link = mysql_connect ( SAE_MYSQL_HOST_M, SAE_MYSQL_USER, SAE_MYSQL_PASS ) or die ( Imit_L ( '_SAE_CONNECT_DB_ERR_' ) );
		mysql_select_db ( SAE_MYSQL_DB, self::$link );
		mysql_query ( "set names " . self::$charset, self::$link );
		if (! mysql_select_db ( SAE_MYSQL_DB, self::$link )) {
			//如果数据库不存在，自动建立
			mysql_query ( 'create database ' . SAE_MYSQL_DB, self::$link );
			mysql_select_db ( SAE_MYSQL_DB, self::$link ) or Imit_L ( '_SAE_DATABASE_NOT_EXIST_' );
		}
	}
	
	//返回影响条数
	public function affectedRows() {
		return mysql_affected_rows ( self::$link );
	}
	
	//关闭数据库
	public function closeDb() {
		mysql_close ( self::$link );
	}
	
	//escape
	public function escape($str) {
		return mysql_real_escape_string ( $str, self::$link );
	}
	
	//获得数据，返回数组
	public function getData($sql) {
		$this->last_sql = $sql;
		$result = mysql_query ( $sql, self::$link );
		if (! $result) {
			return false;
		}
		$this->save_error ();
		$data = array ();
		while ( $arr = mysql_fetch_array ( $result ) ) {
			$data [] = $arr;
		}
		mysql_free_result ( $result );
		return $data;
	}
	
	//返回第一条数据
	public function getLine($sql) {
		$data = $this->getData ( $sql );
		if ($data) {
			return @reset ( $data );
		} else {
			return false;
		}
	}
	
	//返回第一条记录的第一个字段值
	public function getVar($sql) {
		$data = $this->getLine ( $sql );
		if ($data) {
			return $data [@reset ( @array_keys ( $data ) )];
		} else {
			return false;
		}
	}
	
	//返回最后一个id
	public function lastId() {
		return mysql_insert_id ( self::$link );
	}
	
	//运行sql语句
	public function runSql($sql) {
		$ret = mysql_query ( $sql );
		$this->save_error ();
		return $ret;
	}
	
	//设置项目名
	public function setAppname($appname) {
	
	}
	
	//设置字符集
	public function setCharset($charset) {
		self::$charset = $charset;
		mysql_query ( "set names " . self::$charset, self::$link );
	}
	
	//设置端口
	public function setPort($port) {
	
	}
	
	protected function save_error() {
		$this->errmsg = mysql_error ( self::$link );
		$this->errno = mysql_errno ( self::$link );
	}

}
